package org.example.reservas_mesas;

import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.util.Log;
import com.google.android.gcm.GCMBaseIntentService;
import org.example.library.Invoker;
import org.example.library.RegistrarUsuario;
import org.example.library.ServidorPHP;


public class GCMIntentService extends GCMBaseIntentService {
    private String usuario = "";
    
 public GCMIntentService(){
  super("467373484049");

 }
 
 @Override
 protected void onError(Context context, String errorId) {
  Log.d("GCM", "Error: " + errorId);
 }

 @Override
 protected void onMessage(Context context, Intent intent) {
    String msg = intent.getExtras().getString("message");
     Log.d("GCM", "Mensaje: " + msg);
     notificarMensaje(context, msg);
 }
 

 @Override
 protected void onRegistered(Context context, String regId) {
  String usuario = "";
  
  SharedPreferences prefs = context.getSharedPreferences("MisPreferencias", Context.MODE_PRIVATE);
 
    usuario = prefs.getString("usuario", "");
  
    registrarUsuario(usuario, regId);
    

        SharedPreferences.Editor editor = prefs.edit();
        
        editor.putString("id", regId);
        editor.commit();
        Log.d("GCM", "onRegistered: Actualizado OK.");
 }

 @Override
 protected void onUnregistered(Context context, String regId) {
  Log.d("GCM", "onUnregistered: Desregistrado OK.");
  
  
 }
 
 private void registrarUsuario(String username, String regId){
    try{   
        Invoker invoker = new Invoker();
        ServidorPHP servidor = new ServidorPHP();
        servidor.SetMailComensal(username);
        servidor.SetIDReg(regId);
        RegistrarUsuario RU = new RegistrarUsuario(servidor);
        invoker.SetPeticion(RU);
        invoker.Ejecuta();
    }catch(Exception e){}
 }
 
 private void notificarMensaje(Context context, String msg)
 {
     String notificationService = Context.NOTIFICATION_SERVICE;
     NotificationManager notificationManager =(NotificationManager) context.getSystemService(notificationService);
  
     //Configuramos la notificación
     int icono = android.R.drawable.ic_dialog_alert;
     CharSequence estado = "Has recibido un nuevo mensaje";
     long hora = System.currentTimeMillis();
  
     Notification notification = new Notification(icono, estado, hora);
     long[] vibrate = {100,100,200,300};
     notification.vibrate = vibrate;
  
     //Configuramos el Intent
     Context contexto = context.getApplicationContext();
     CharSequence titulo = "Reserva Mesas - Se ha modificado el estado de tus reservas";
     CharSequence descripcion = msg;
  
     Intent intent = new Intent(contexto, org.example.reservas_mesas.listado.class);
     Bundle b = new Bundle();
     b.putInt("update", 1);
     intent.putExtra("android.intent.extra.INTENT", b);

     PendingIntent contIntent = PendingIntent.getActivity(contexto, 0, intent, android.content.Intent.FLAG_ACTIVITY_NEW_TASK);
  
    notification.setLatestEventInfo(contexto, titulo, descripcion, contIntent);
  
    notification.flags |= Notification.FLAG_AUTO_CANCEL;
  
    notificationManager.notify(1, notification); 
    }

}